package com.swanclouds.model.managers.builder.BMC;

import com.swanclouds.common.Buildable;
import com.swanclouds.model.common.redfish.Oem;
import com.swanclouds.model.managers.Oem.BMC.BMCUpdateEthernetInterfaces;
import com.swanclouds.redfish.common.redfish.Addresses;
import com.swanclouds.redfish.common.redfish.Vlan;
import java.util.List;

/**
 * @author 李文强
 * @version jdk1.8.0
 */
@SuppressWarnings("all")
public interface UpdateEthernetInterfacesBuilder extends Buildable.Builder<UpdateEthernetInterfacesBuilder, BMCUpdateEthernetInterfaces> {

    /**
     * 接口使能，表示接口是否可用（接口使能时，若ipv4和ipv6均未使能，则使能ipv4）
     * @param interFaceEnabled true  接口已启用 false  接口未启用
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder InterFaceEnabled(Boolean interFaceEnabled);

    /**
     * 指定BMC管理网口的速率（仅在AutoNeg为false时存在该字段，建议该字段单独配置）
     * @param speedMbps 整数
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder SpeedMbps(Integer speedMbps);

    /**
     * 自动协商模式，表示速率和复用是自动协商的（建议该字段单独配置）
     * @param autoNeg 包括：true false
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder AutoNeg(Boolean autoNeg);

    /**
     * 全双工模式（仅在AutoNeg为false时存在该字段，建议该字段单独配置）。
     * @param fullDuplex 包括：true false
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder FullDuplex(Boolean fullDuplex);

    /**
     * 最大传输单元大小，范围1280到1500
     * @param mtuSize  范围1280到1500
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder MTUSize(Integer mtuSize);

    /**
     *  指定BMC网口的VLAN信息
     * @param vlan 指定BMC网口的VLAN信息
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder VLAN(Vlan vlan);

    /**
     * 自定义信息
     * @param oem 自定义信息
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder Oem(Oem oem);

    /**
     *  指定BMC网口的IPv4信息
     * @param ipv4Addresses 指定BMC网口的IPv4信息
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder Ipv4Addresses(List<Addresses> ipv4Addresses);

    /**
     * 指定BMC网口的IPv6信息
     * @param ipv6Addresses 指定BMC网口的IPv6信息
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder Ipv6Addresses(List<Addresses> ipv6Addresses);

    /**
     * 指定BMC网口的IPv4静态地址信息
     * @param ipv4StaticAddresses 指定BMC网口的IPv4静态地址信息
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder IPv4StaticAddresses(List<Addresses> ipv4StaticAddresses);

    /**
     * 指定BMC网口的静态IPv6信息(配置多个IPV6静态地址时，建议此字段单独配置)
     * @param ipv6StaticAddresses 指定BMC网口的静态IPv6信息
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder IPv6StaticAddresses(List<Addresses> ipv6StaticAddresses);

    /**
     * 指定BMC网口的IPv6网关地址
     * @param ipv6DefaultGateway 指定BMC网口的IPv6网关地址
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder IPv6DefaultGateway(String ipv6DefaultGateway);

    /**
     * IPv6静态默认网关地址。（ipv6仅支持一个网关，所以IPv6DefaultGateway和IPv6StaticDefaultGateways仅支持一个）
     * @param ipv6StateDefaultGateway IPv6静态默认网关地址
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder IPv6StateDefaultGateway(String ipv6StateDefaultGateway);

    /**
     * DNS服务器信息。
     * 格式为：
     * [
     * "主DNS服务器IPv4或IPv6地址",
     * "备DNS服务器IPv4或IPv6地址"
     * ]
     * @param nameServers 服务器名称
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder NameServers(String[] nameServers);

    /**
     *静态的DNS服务器信息。
     * 格式为：
     * ["主DNS服务器IPv4或IPv6地址","备DNS服务器IPv4或IPv6地址"]
     * @param staticNameServices  ["主DNS服务器IPv4或IPv6地址","备DNS服务器IPv4或IPv6地址"]
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder StaticNameServices(String[] staticNameServices);

    /**
     * 指定BMC网口的主机名（当FQDN存在时，以FQDN第一个字段设定主机名）
     * @param hostName 指定的主机名
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder HostName(String hostName);

    /**
     * 指定BMC网口的全限定域名
     * @param fqdn 指定BMC网口的全限定域名
     * @return UpdateEthernetInterfacesBuilder
     */
    UpdateEthernetInterfacesBuilder FQDN(String fqdn);
}
